package com.kun.companion.core.config;

import com.kun.companion.core.AbstractApplication;

import java.net.URL;
import java.util.function.Function;

/**
 * 程序配置接口类
 *
 * @author gzc
 * @since 2025/1/26 21:13
 **/
public interface ApplicationConfiguration {
    /**
     * 获取配置类的初始化顺序
     *
     * @return 初始化顺序（数值越小，优先级越高）
     */
    default int getOrder() {
        return 1;
    }

    /**
     * 初始化方法
     *
     * @param loader       程序入口类对象
     * @param loadFunction 加载函数
     */
    void init(Class<? extends AbstractApplication> loader, Function<String, URL> loadFunction);
}
